package com.emerquim.bean.model;

import java.text.Format;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;

import javax.faces.event.ActionEvent;

import org.apache.log4j.Logger;

/**
 * Clase para manejar las entidades invlocuradas en el evento
 * @author Felipe Criales
 */
public class EntidadesInvolucradas {
	
	/**
	 * Funcionalidad de log
	 */
	private static final Logger log = Logger.getLogger(EntidadesInvolucradas.class);

	// --------------------------------------------------------
	// Constantes
	// --------------------------------------------------------
	/**
	 * Constante para el tipo de entidad involucrada en el evento
	 */
	public final static int TIPO_ENTIDAD = 1;
	
	/**
	 * Constante para el tipo de entidad organismo ayuda
	 */
	public final static int TIPO_ORG_AYUDA = 2;
	
	/**
	 * Constante para el tipo de entidad que llamo
	 */
	public final static int TIPO_ENTIDAD_LLAMO = 3;
		
	// --------------------------------------------------------
	// Atributos
	// --------------------------------------------------------
	
	/**
	 * La entidad invlocurada
	 */
	private Entidad entidad;
	
	/**
	 * El tipo de entidad involucrada
	 */
	private int tipoEntidad;
	
	/**
	 * Atributo para la fecha de contacto de la entidad
	 */
	private Date fechaContacto;
	
	/**
	 * Atributo para el nombre del contacto del entidad
	 */
	private String nombreContacto;
	
	/**
	 * La lista para que lo contiene (para eliminarlo)
	 */
	private List listaPapa;
		
	/**
	 * Atributo para el telefono del contacto
	 */
	private String telefonoContacto;
	
	/**
	 * Atributo para la direccion del contacto
	 */
	private String direccionContacto;
	
	/**
	 * Atributo para el celular del contacto
	 */
	private String celularContacto;
	
	/**
	 * Atributo para correo del contacto
	 */
	private String correoContacto;
	
	/**
	 * Constructor sin parametros
	 */
	public EntidadesInvolucradas(List papa) {
		this.listaPapa = papa;
		this.inicializarDatos();
	}
	
	/**
	 * Inicializa los datos en blanco de la entidad de contacto
	 */
	public void inicializarDatos(){
		this.entidad = new Entidad();
		this.tipoEntidad = this.TIPO_ENTIDAD;
		this.fechaContacto = new Date();
		this.nombreContacto = "";
		this.telefonoContacto = "";
		this.direccionContacto = "";
		this.celularContacto = "";
		this.correoContacto = "";
	}
	
	/**
	 * Elimina la entidad de la lista papa
	 * @param event El evento
	 * @author Felipe Criales
	 */
	public void eliminarEntidad(ActionEvent event){		
		try {
			if(this.listaPapa != null){
				listaPapa.remove(this);
			}
		} catch (Exception e) {
			log.error("Error al eliminar la entidad de la lista papa", e);
		}
	}
	
	/**
	 * Retorna la fecha del reporte en formato String
	 * 
	 * @return
	 */
	public String getFechaContactoString() {
		Format formater = new SimpleDateFormat("yyyy-MM-dd HH:mm");
		return formater.format(this.fechaContacto);
	}

	/**
	 * @return the entidad
	 */
	public Entidad getEntidad() {
		return entidad;
	}

	/**
	 * @param entidad the entidad to set
	 */
	public void setEntidad(Entidad entidad) {
		this.entidad = entidad;
	}

	/**
	 * @return the tipoEntidad
	 */
	public int getTipoEntidad() {
		return tipoEntidad;
	}

	/**
	 * @param tipoEntidad the tipoEntidad to set
	 */
	public void setTipoEntidad(int tipoEntidad) {
		this.tipoEntidad = tipoEntidad;
	}

	/**
	 * @return the fechaContacto
	 */
	public Date getFechaContacto() {
		return fechaContacto;
	}

	/**
	 * @param fechaContacto the fechaContacto to set
	 */
	public void setFechaContacto(Date fechaContacto) {
		this.fechaContacto = fechaContacto;
	}

	/**
	 * @return the nombreContacto
	 */
	public String getNombreContacto() {
		return nombreContacto;
	}

	/**
	 * @param nombreContacto the nombreContacto to set
	 */
	public void setNombreContacto(String nombreContacto) {
		this.nombreContacto = nombreContacto;
	}

	/**
	 * @return the listaPapa
	 */
	public List getListaPapa() {
		return listaPapa;
	}

	/**
	 * @param listaPapa the listaPapa to set
	 */
	public void setListaPapa(List listaPapa) {
		this.listaPapa = listaPapa;
	}

	/**
	 * @return the telefonoContacto
	 */
	public String getTelefonoContacto() {
		return telefonoContacto;
	}

	/**
	 * @param telefonoContacto the telefonoContacto to set
	 */
	public void setTelefonoContacto(String telefonoContacto) {
		this.telefonoContacto = telefonoContacto;
	}

	/**
	 * @return the direccionContacto
	 */
	public String getDireccionContacto() {
		return direccionContacto;
	}

	/**
	 * @param direccionContacto the direccionContacto to set
	 */
	public void setDireccionContacto(String direccionContacto) {
		this.direccionContacto = direccionContacto;
	}

	/**
	 * @return the celularContacto
	 */
	public String getCelularContacto() {
		return celularContacto;
	}

	/**
	 * @param celularContacto the celularContacto to set
	 */
	public void setCelularContacto(String celularContacto) {
		this.celularContacto = celularContacto;
	}

	/**
	 * @return the correoContacto
	 */
	public String getCorreoContacto() {
		return correoContacto;
	}

	/**
	 * @param correoContacto the correoContacto to set
	 */
	public void setCorreoContacto(String correoContacto) {
		this.correoContacto = correoContacto;
	}
}
